00001 <?php
00002 require_once('class.userdata.inc.php');
00003
00004 class UserDataPrinter {
00005
00006 private static $bbcode;
00007
00014 public static function printUserData($userdata) {
00015 if (!$userdata instanceof UserData) {
00016 return 'Bei der Ermittlung der benutzerspezifischen Daten ist ein Fehler aufgetreten.';
00017 }
00018
00019 if (count($userdata->getUserData()) === 0) {
00020 return 'Es konnten keine benutzerspezifischen Daten ermittelt werden.';
00021 }
00022
00023 ob_start();
00024
00025 $metadata = $userdata->getMetaData();
00026 $currentCourse = null;
00027 $currentModule = null;
00028
00029 echo '<p>Stand: '.date('j.n.Y H:i:s', time())
00030 .' (eStudy Version: '.ESTUDY_VERSION.')</p>';
00031
00032 if (($count = count($metadata[UserDataProvider::COURSE])) > 1) {
00033 echo '<p>Die folgenden <b>'.$count.'</b> Kurse wurden durchsucht:<ul>';
00034 foreach ($metadata[UserDataProvider::COURSE] as $courseID => $course) {
00035 echo '<li><a href="#course_'.urlencode($courseID).'">'.$course['name'].'</a>'.self::getFlags($course).'</li>';
00036 }
00037 echo '</ul></p>';
00038 }
00039
00040 echo '<p>Sie haben das Recht die über Sie gespeicherten Daten zu löschen!<br/>'
00041 .'Dies können Sie jeweils dort tun, wo Sie die Inhalte erstellt haben.</p>';
00042
00043 $toggleBackground = false;
00044 foreach ($userdata->getUserData() as $data) {
00045 foreach ($data as $key => $value) {
00046 $data[$key]= self::toHTML($value);
00047 }
00048
00049 if ($currentCourse !== $data[UserDataProvider::COURSE]) {
00050 if ($currentCourse !== null) {
00051 echo '</table>';
00052 }
00053
00054 echo '<table class="tableBorder" width="100%" cellspacing="0" cellpadding="3">'
00055 .'<colgroup><col width="20%"><col width="30%"><col width="50%"></colgroup>'
00056 .'<tr class="tableHead"><td colspan="3">'
00057 .$metadata[UserDataProvider::COURSE][$data[UserDataProvider::COURSE]]['name']
00058 .self::getFlags($metadata[UserDataProvider::COURSE][$data[UserDataProvider::COURSE]])
00059 .' <a href="#" id="course_'.urlencode($data[UserDataProvider::COURSE]).'" name="course_'.urlencode($data[UserDataProvider::COURSE]).'"> </a>'
00060 .'</td></tr>';
00061
00062 $currentCourse = $data[UserDataProvider::COURSE];
00063 $currentModule = null;
00064 }
00065 if ($currentModule !== $data[UserDataProvider::MODULE]) {
00066 if ($currentModule !== null) {
00067 echo '<tr class="'.(!$toggleBackground?'tableCellDark':'tableCell').'"><td colspan="3"><br/></td></tr>';
00068 }
00069 $currentModule = $data[UserDataProvider::MODULE];
00070 $toggleBackground = false;
00071
00072
00073 echo '<tr class="tableCellHead"><td colspan="3">'.$metadata[UserDataProvider::MODULE][$data[UserDataProvider::MODULE]]['name'].'</td></tr>'
00074 .'<tr class="tableCellDark"><td>Datum</td><td>Beschreibung</td><td>Inhalt</td></tr>';
00075 }
00076 echo '<tr class="'.($toggleBackground?'tableCellDark':'tableCell').'" valign="top">'
00077 .'<td>'.date('j.n.Y H:i:s', $data['date']).'</td>'
00078 .'<td>'.$data['hint'].'</td>'
00079 .'<td>'.$data['content'].'</td>'
00080 .'</tr>';
00081
00082
00083
00084
00085
00086
00087
00088
00089
00090
00091 $toggleBackground = !$toggleBackground;
00092 }
00093 echo '</table>';
00094
00095 return ob_get_clean();
00096 }
00097
00104 private static function toHTML($data) {
00105 if (is_string($data)) {
00106 if (! isset(self::$bbcode)) {
00107 self::$bbcode = new BBCode();
00108 }
00109 $data = self::$bbcode->parse($data);
00110 }
00111
00112 return $data;
00113 }
00114
00121 private static function getFlags($course) {
00122 $result = array();
00123
00124 if (! empty($course[UserDataProvider::POLICY])) {
00125 $result[] = 'Prüfungsleistung';
00126 }
00127 if (! empty($course[UserDataProvider::CLOSED])) {
00128 $result[] = 'geschlossen';
00129 }
00130
00131 if (count($result) > 0) {
00132 return ' ('.join(', ', $result).')';
00133 }
00134 return '';
00135 }
00136 }
00137 ?>